home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / nt / kmglos.zip / GLOS.TTY < prev    next >
Text File  |  1993-01-29  |  120KB  |  3,499 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.              Glossary of Terms and Acronyms             Glossary of Terms and Acronyms
  12.  
  13.              access violation             access violation
  14.                 An attempt to carry out a memory operation that is not
  15.                 allowed by the underlying page protection. See also probe
  16.                 and SEH.
  17.                    There are four basic kinds of actions that can cause
  18.                    access violations:
  19.                    1   Attempting an invalid operation, such as writing to a
  20.                        read-only buffer.
  21.                    2   Attempting to access memory beyond the limit of the
  22.                        current program's address space (a.k.a. "length
  23.                        violation").
  24.                    3   Attempting to access a page to which the system
  25.                        forbids access. For example, code is not allowed to
  26.                        run in the low-order 64K of the NT user-mode address
  27.                        space in order to simplify the detection of NULL
  28.                        pointer references.
  29.                    4   Attempting to access a page that is currently
  30.                        resident but dedicated to the use of an executive
  31.                        component. For example, user-mode code is not allowed
  32.                        access a page that the Kernel is using.
  33.                    Note that this term pertains to memory operations. It has
  34.                    nothing to do with the Security Manager's checking of
  35.                    user-mode access rights to objects. See security
  36.                    violation, ACE, and ACL.
  37.  
  38.              ACE             ACE
  39.                 (1) Access control entry
  40.                    An ACE is an individual entry in an ACL. An ACE contains
  41.                    an SID and describes the access rights that a particular
  42.                    user or group of users has to a system resource. The set
  43.                    of all ACEs on the object are used to determine whether
  44.                    an access request to the object is granted. See also
  45.                    security descriptor.
  46.                 (2) Advanced computing environment
  47.                    A consortium of hardware and software companies formed to
  48.                    promote an open computing environment. NT is one of the
  49.                    original ACE operating systems.
  50.  
  51.              access right             access right
  52.                 A permission granted to a process to manipulate a particular
  53.                 object in a particular way (by calling a service). Different
  54.                 NT object types support different access rights, which are
  55.                 stored in an object's ACL.
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.         G-2      Kernel-mode Driver Design Guide        G-2      Kernel-mode Driver Design Guide
  73.  
  74.  
  75.         ACL        ACL
  76.            Access control list
  77.               An ordered list of ACEs.
  78.  
  79.         adapter object        adapter object
  80.            A kernel-mode-only object type, defined by the I/O Manager
  81.            and supported by the HAL component. An adapter object
  82.            represents a hardware bus adapter or DMA controller channel.
  83.            Adapter objects "connect" different kinds of devices on the
  84.            bus or DMA controller, each device (or kind of device) with
  85.            its own driver.
  86.  
  87.         affinity        affinity
  88.            A programmer-defined attribute of a process and/or thread on
  89.            a multiprocessor platform:
  90.            n  For a process, its affinity is the programmer-determined           n
  91.               set of processors on which its threads are permitted to
  92.               run.
  93.            n  For a thread, its default affinity is identical to that           n
  94.               of the process to which it belongs; otherwise, its
  95.               affinity must be a proper subset of the process's.
  96.  
  97.         alert        alert
  98.            A Boolean that provides a way to break into a thread's
  99.            execution at a point where either of the following
  100.            conditions is met:
  101.            n  The thread is in an alertable wait state (as specified           n
  102.               when the wait service was called).
  103.            n  The thread polls the alerted flag.           n
  104.  
  105.         APC        APC
  106.            Asynchronous procedure call
  107.               An APC is a Kernel-defined control object representing a
  108.               procedure that is called asynchronously. APCs are thread-
  109.               context dependent; that is, they are queued to a
  110.               particular thread for execution.
  111.               There are three different kinds of APCs in NT:
  112.               1   User APCs - These APCs are used by certain                  _________
  113.                   asynchronous NT system services to allow users to
  114.                   synchronize the execution of a thread with the
  115.                   completion of an operation or the occurrence of an
  116.                   event such as a timer's expiration. User APCs are, by
  117.                   default, disabled. That is, they are queued to the
  118.                   user's thread, but they are not executed except at
  119.                   well-defined points in the user's program.
  120.                   Specifically, they can only be executed when the user
  121.                   has called a wait service and has enabled alerts to
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.                             Glossary of Terms and Acronyms      G-3                                 Glossary of Terms and Acronyms      G-3     
  139.  
  140.  
  141.                        occur, or if the user has called the test-alert
  142.                        service.
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.         G-4      Kernel-mode Driver Design Guide        G-4      Kernel-mode Driver Design Guide
  205.  
  206.  
  207.               2   Kernel APCs - These APCs are normal kernel-mode APCs.                  ___________
  208.                   They are much like a normal user APC except that they
  209.                   are executable by default. That is, they are enabled
  210.                   except when the thread is already executing a Kernel
  211.                   APC.  (Note that a special Kernel APC always preempts
  212.                   these.)
  213.               3   Special Kernel APCs - These APCs cannot be blocked                  ___________________
  214.                   except by running at a raised IRQL. They are executed
  215.                   at APC_LEVEL IRQL (see IDT), in kernel mode. These
  216.                   types of APCs are used by the system to force a
  217.                   thread to execute a procedure in the thread's
  218.                   context. An example of this is I/O completion:  the
  219.                   I/O Manager needs to get back into the context of the
  220.                   original requestor of the I/O operation so that it
  221.                   can copy buffers, etc. In order to do this, the I/O
  222.                   Manager must be able to access the virtual address
  223.                   space of the thread/process, and the most efficient
  224.                   way to complete the operation is to be in the calling
  225.                   thread's context.
  226.  
  227.         ARC        ARC
  228.            (1) The NT executive runs on top of ARC-compliant machines,
  229.            including both RISC- and CISC-based platforms that supply
  230.            the following components to the OS loader:
  231.            n  In MIPS-based platforms, a set of machine firmware that           n
  232.               supports bootstrap loading and execution as an
  233.               "abstracted" set of ARC routines and ARC devices.
  234.            n  In x86-based platforms, a hardware recognizer (Ntdetect)           n
  235.               that finds devices necessary to bootstrap the system by
  236.               querying the ROM BIOS and builds a hardware database that
  237.               emulates the RISC-based ARC firmware.
  238.            n  In both kinds of platforms, a HAL that interfaces between           n
  239.               the hardware and NT.
  240.            Later in the load process, the driver of the disk, CD-ROM,
  241.            or floppy device from which the system booted creates an
  242.            alias between the name of its device object and the
  243.            corresponding ARC device name by calling IoAssignArcName.                                                    IoAssignArcName
  244.            (2) Advanced RISC computing
  245.               Refers to a RISC-based computer architecture standard,
  246.               associated with the ACE consortium.
  247.  
  248.         associated IRP        associated IRP
  249.            One of a set of IRPs, created by the highest-level driver in
  250.            a chain of layered drivers, that specifies some part of an
  251.            I/O request to be sent on to a lower-level driver. When all
  252.            associated IRPs in the set have been processed, the highest-
  253.            level driver completes the original request. See also IRP.
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.                             Glossary of Terms and Acronyms      G-5                                 Glossary of Terms and Acronyms      G-5     
  271.  
  272.  
  273.              asynchronous I/O             asynchronous I/O
  274.                 A model for I/O in which the operations carried out to
  275.                 satisfy I/O requests do not necessarily occur in sequence.
  276.                 The application that originally made the request can
  277.                 continue executing (rather than waiting for its I/O to
  278.                 complete), the I/O Manager or a high-level driver can
  279.                 reorder I/O requests as they are received, and a low-level
  280.                 driver can start an I/O operation on a device before it has
  281.                 completed the preceding request, particularly in a
  282.                 multiprocessor machine.
  283.  
  284.              backing store             backing store
  285.                 A mass storage medium, such as a disk, that serves as backup
  286.                 "memory" for paging when physical memory becomes full. See
  287.                 also paging file.
  288.  
  289.              balance set             balance set
  290.                 The set of processes currently in the system, in particular,
  291.                 processes whose threads are eligible for execution. See also
  292.                 dispatch state and working set.
  293.                    At any given moment, the balance set depends on the
  294.                    availability of physical memory (pages) to back the
  295.                    virtual address space associated with each active
  296.                    process. If a physical memory shortage occurs, the NT
  297.                    Memory Manager first trims the working set of each active
  298.                    process to its minimum, then (if necessary) removes
  299.                    processes from the balance set.
  300.  
  301.              based section             based section
  302.                 A section allocated at the same virtual address for each
  303.                 process that has a view of the section. See also section and
  304.                 view.
  305.  
  306.              BCB             BCB
  307.                 Buffer control block
  308.                    An opaque Cache Manager structure, used to maintain state
  309.                    as a file system pins and releases data (for example, its
  310.                    volume structure) in the cache.
  311.  
  312.              big-endian             big-endian
  313.                 Refers to a memory architecture in which the byte layout is
  314.                 as follows:
  315.                 n  Byte N is the most significant (and, in conventional                n
  316.                    layout diagrams, the "leftmost") byte of:
  317.                    n   A word composed of bytes N and (N + 1).                   n
  318.                    n   A double word composed of bytes N, (N + 1), (N + 2),                   n
  319.                        and (N + 3).
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.         G-6      Kernel-mode Driver Design Guide        G-6      Kernel-mode Driver Design Guide
  337.  
  338.  
  339.               n   A K-byte memory entity composed of bytes N, (N +              n
  340.                   1),...,(N + K - 1).
  341.            n  The address of the preceding word, double word, or K-byte           n
  342.               entity is its most significant byte, N.
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.                             Glossary of Terms and Acronyms      G-7                                 Glossary of Terms and Acronyms      G-7     
  403.  
  404.  
  405.                 A MIPS machine can be configured for either big-endian or
  406.                 little-endian byte addressing. For a big-endian
  407.                 configuration, the most significant bit of a 16-bit short                                                                    short
  408.                 value is the "leftmost" bit at byte N, while the least
  409.                 significant bit is the "rightmost" bit of byte (N + 1). See
  410.                 also little-endian.
  411.                    The terms "big-endian" and "little-endian" are derived
  412.                    from Jonathan Swift's Gulliver's Travels.                                         __________________
  413.  
  414.              Cache Manager             Cache Manager
  415.                 An executive component that provides file caching support
  416.                 for NT file system drivers.
  417.  
  418.              CCB             CCB
  419.                 Context control block
  420.                    An internal NT-defined file system structure, in which a
  421.                    file system maintains per file object state for an open
  422.                    instance of a file. See also FCB and DCB.
  423.  
  424.              CDB             CDB
  425.                 Command descriptor block
  426.                    A structure, defined by the SCSI-II standard, used to
  427.                    communicate requests to a target device on the SCSI bus.
  428.  
  429.              CDFS             CDFS
  430.                 CD-ROM file system
  431.  
  432.              CD-ROM             CD-ROM
  433.                 Compact disk, read-only memory
  434.  
  435.              chase             chase
  436.                 To follow a linked list, queue, or other software-defined
  437.                 path. For example, when a file system encounters a symbolic
  438.                 link file within a path specification, it "chases the
  439.                 symbolic link" to redirect operations to the target file.
  440.                 See also symbolic link.
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.         G-8      Kernel-mode Driver Design Guide        G-8      Kernel-mode Driver Design Guide
  469.  
  470.  
  471.         child process        child process
  472.            When a new NT-native process is created by calling a system
  473.            service, the caller must specify a "parent" process from
  474.            which the new process inherits its token, quota, and base
  475.            priority. The new process can optionally inherit any or all
  476.            of the following from the specified parent process:
  477.            n  A copy of the parent's virtual address space.           n
  478.            n  All object handles that were opened with the inheritance           n
  479.               attribute.
  480.            n  Debugging and exception handling ports.           n
  481.            However, an NT user-mode process becomes a wholly
  482.            independent peer to its so-called parent process as soon as
  483.            it has been created. After process creation, any process-to-
  484.            process dependencies become the responsibility of a
  485.            protected subsystem (such as the Win32TM or POSIX
  486.            subsystem).
  487.            A kernel-mode-only (a.k.a. "system") process has no "parent"
  488.            when it is created.
  489.  
  490.         CID        CID
  491.            Client identifier
  492.               A unique value that identifies a thread.
  493.  
  494.         class driver        class driver
  495.            a.k.a. "type driver"
  496.               (1) An intermediate driver for a physical device, which
  497.               is connected to a so-called "intelligent controller" such
  498.               as a SCSI HBA, or to an adapter bus. Such a class driver
  499.               communicates with the corresponding port driver according
  500.               to an established protocol, such NT-defined SRBs. The
  501.               system-supplied SCSI disk, CD-ROM, and tape class drivers
  502.               are examples of this type of class driver.
  503.               (2) An intermediate driver that provides system-required
  504.               but hardware-independent support for a given class of
  505.               physical devices. Such a class driver communicates with a
  506.               corresponding hardware-dependent port driver, using a set
  507.               of system-defined device I/O control requests, possibly
  508.               with additional driver defined internal device I/O
  509.               control requests. The system-supplied keyboard and mouse
  510.               class drivers are examples of this type of class driver.
  511.  
  512.         client/server model        client/server model
  513.            A model for structuring applications or operating systems
  514.            such that the system is divided into processes (servers),
  515.            each of which provides a set of specialized services to
  516.            other processes (clients).
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.                             Glossary of Terms and Acronyms      G-9                                 Glossary of Terms and Acronyms      G-9     
  535.  
  536.  
  537.              collided page fault             collided page fault
  538.                 A page fault caused by one thread while an in-page I/O
  539.                 operation for another thread is being done on the same page.
  540.  
  541.              commitment             commitment
  542.                 The NT Memory Manager's current value for paging file usage.
  543.  
  544.              context             context
  545.                 The execution state of a thread at any given moment:
  546.                 n  For a user-mode thread, the platform-dependent register                n
  547.                    state, kernel stack, TEB, and user stack in the address
  548.                    space of the process to which the thread belongs.
  549.                 n  For a kernel-mode thread, the platform-dependent register                n
  550.                    state and kernel stack.
  551.                    Kernel-mode threads have neither a TEB nor a user-mode
  552.                    context, but they must have an associated process. See
  553.                    also process object.
  554.                    Most NT device drivers do not have a context in this
  555.                    sense. Unless a driver (such as an FSD) creates its own
  556.                    process and/or thread(s), it does not have its own stack
  557.                    space or register state. For each driver, the set of
  558.                    objects it owns and the IRPs that it can access via a
  559.                    device queue object associated with its device object can
  560.                    be considered all or part of its context.
  561.  
  562.              context record             context record
  563.                 A system-defined structure, containing the current register
  564.                 state for an exception handler. See also SEH.
  565.  
  566.              control objects             control objects
  567.                 A class of Kernel-defined object types, used to manage all
  568.                 kernel-mode operations except dispatching and
  569.                 synchronization. See also dispatcher objects.
  570.                    Control objects include: APC, DPC, device queue,
  571.                    interrupt and process objects. Note that all control
  572.                    object types except processes are kernel-mode-only
  573.                    objects, invisible to user-mode code. User-mode APC
  574.                    objects are also "invisible" in the sense that they look
  575.                    more like user-supplied routines to be called on return
  576.                    from certain system services (such as a request to read a
  577.                    file) than like objects.
  578.  
  579.              controller object             controller object
  580.                 A kernel-mode-only object type, defined by the I/O Manager.
  581.                 A controller object represents a hardware controller or
  582.                 channel. The driver calls IoAllocateController to carry out                                          IoAllocateController
  583.                 synchronized I/O on attached devices. Controller objects
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.         G-10     Kernel-mode Driver Design Guide        G-10     Kernel-mode Driver Design Guide
  601.  
  602.  
  603.            "connect" a set of similar devices attached to a controller
  604.            with a single driver.
  605.  
  606.         critical section        critical section
  607.            A piece of code that accesses a nonsharable resource, such
  608.            as device-state data stored in a device extension to which
  609.            access must be synchronized among some number of driver
  610.            routines.
  611.  
  612.         DACL        DACL
  613.            Discretionary access control list
  614.               A discretionary ACL is part of the security descriptor
  615.               for an object. It can be applied to a newly created
  616.               object in order to constrain access to the object. See
  617.               also ACE, access right, ACL and security descriptor.
  618.  
  619.         DCB        DCB
  620.            Directory control block
  621.               An internal FS structure in which a file system maintains
  622.               state for an open instance of a directory file.
  623.  
  624.         deadlock        deadlock
  625.            A runtime error condition that occurs when two threads of
  626.            execution are blocked, each waiting to acquire a resource
  627.            that the other holds, and both unable to continue running.
  628.  
  629.         device extension        device extension
  630.            A part of a device object whose size is determined when a
  631.            driver creates the device object and whose internal
  632.            structure is driver-defined. For many NT drivers, a device
  633.            extension is the driver's major (and only) data storage
  634.            area, used to maintain device state and to contain any
  635.            system-defined objects and other data that the driver writer
  636.            decides to use.
  637.  
  638.         device object        device object
  639.            A kernel-mode-only, I/O Manager-defined object type, used to
  640.            represent a physical, logical, or virtual device whose
  641.            driver has been loaded into the system. Each driver calls
  642.            IoCreateDevice to initialize a device object for each device           IoCreateDevice
  643.            that driver services. See also driver object.
  644.            Devices are "visible" to end users as named file objects,
  645.            stored in a directory protected against careless or
  646.            malicious user-mode access. User-mode code (protected
  647.            subsystems) must access any device through the opaque handle
  648.            returned by the system service that opens the file object
  649.            that represents the device to user-mode code.
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.                             Glossary of Terms and Acronyms     G-11                                 Glossary of Terms and Acronyms     G-11     
  667.  
  668.  
  669.              device queue object             device queue object
  670.                 A kernel-mode-only, Kernel-defined control object type, used
  671.                 to record the Boolean state (Busy or Not_Busy) of a device
  672.                 and to queue I/O requests for subsequent processing. A
  673.                 device queue object has an associated executive spin lock.
  674.                    An I/O request, called a "queue entry," is not actually
  675.                    placed in the device queue unless the state is already
  676.                    Busy:
  677.                    n   On the transition from Not_Busy to Busy, the driver                   n
  678.                        is expected to service the queue entry immediately.
  679.                    n   Subsequent requests while the state is Busy are                   n
  680.                        queued in FIFO or key-sorted order.
  681.                    n   An attempt to remove a queue entry from an empty                   n
  682.                        queue causes the transition from Busy to Not_Busy.
  683.                    n   An attempt to remove a queue entry from an empty                   n
  684.                        queue when the device is Not_Busy causes the system
  685.                        to "bugcheck" (i.e., crash).
  686.  
  687.              directory file             directory file
  688.                 A file that points to or lists a set of named file objects.
  689.                    Note that on-disk directory files are represented in NT
  690.                    as file objects, not as object directory objects.
  691.  
  692.              directory object             directory object
  693.                 See object directory object.
  694.  
  695.              DIRQL             DIRQL
  696.                 Device interrupt request level
  697.                    See also IRQL and IDT - This particular IRQL refers to
  698.                    the IRQL at which a given device interrupts.
  699.  
  700.              dispatch state             dispatch state
  701.                 For a thread at any given moment, one of the following:
  702.                 n  Initialized.                n                   ____________
  703.                 n  Ready - queued and eligible for dispatch to a processor.                n                   _____
  704.                 n  Standby - ready and selected to execute, but a context                n                   _______
  705.                    switch to the thread has not yet occurred.
  706.                 n  Running.                n                   _______
  707.                 n  Waiting - suspended until a particular dispatcher object                n                   _______
  708.                    is set to the Signaled state.
  709.                 n  Terminated.                n                   __________
  710.  
  711.              dispatcher objects             dispatcher objects
  712.                 A class of Kernel-defined object types, used to manage
  713.                 dispatching and synchronization. See also control objects.
  714.                    Dispatcher objects have a Boolean state (Signaled or Not-
  715.                    Signaled), and are arguments to the wait services or
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.         G-12     Kernel-mode Driver Design Guide        G-12     Kernel-mode Driver Design Guide
  733.  
  734.  
  735.               Kernel wait routines. Dispatcher objects include:
  736.               events, (kernel-mode-only) mutexes, semaphores, threads,
  737.               and timers.
  738.               Kernel-mode threads synchronize their operations by
  739.               waiting on one or more dispatcher objects, or by waiting
  740.               on other objects, such as user-mode file objects,
  741.               that contain "hidden" kernel-mode dispatcher objects.
  742.               Note that it is a fatal error to wait on a dispatcher
  743.               object at IRQL > APC_LEVEL.
  744.  
  745.         DMA        DMA
  746.            Direct memory access
  747.               (No different from any other OS.)
  748.  
  749.         DPC        DPC
  750.            Deferred procedure call
  751.               A DPC is a Kernel-defined control object type,
  752.               representing a procedure that is to be called later. DPCs
  753.               are executed in kernel mode at IRQL DISPATCH_LEVEL (see
  754.               IDT and IRQL).
  755.               A DPC is primarily used when an interrupt service routine
  756.               (e.g., device driver or clock interrupt service routine)
  757.               needs to perform more work but should do so at a lower
  758.               IRQL than the one at which an ISR executes. (Note that
  759.               getting the IRQL lowered back down quickly is important
  760.               for overall system response time.) The ISR, then, can
  761.               request that a procedure be executed at a lower IRQL at a
  762.               later time.
  763.  
  764.         driver object        driver object
  765.            A kernel-mode-only object representing an NT driver's load
  766.            image, used by the I/O Manager to locate the driver's entry
  767.            points.
  768.  
  769.         EA        EA
  770.            Extended attribute
  771.               Files have basically four different parts:
  772.               1   Data
  773.               2   File system attributes (such as creation time, other
  774.                   times, FAT attributes, etc.)
  775.               3   Security descriptor
  776.               4   EAs
  777.               EAs are the set of extended information about a file. An
  778.               EA is viewed as an untyped name-value pair that is
  779.               defined by the user. Typical system uses are to store the
  780.               icon for an image, to indicate that the file is a
  781.               symbolic link, etc.
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.                             Glossary of Terms and Acronyms     G-13                                 Glossary of Terms and Acronyms     G-13     
  799.  
  800.  
  801.              EFU             EFU
  802.                 Error format utility
  803.                    A utility, supplied by the system, that reads error
  804.                    entries out of an error log file and displays them.
  805.                    Drivers call IoAllocateErrorLogEntry and                                IoAllocateErrorLogEntry
  806.                    IoWriteErrorLogEntry to transfer errors to an error log                   IoWriteErrorLogEntry
  807.                    file; they can supply error buffer translation routines
  808.                    to format entries for display by the EFU.
  809.  
  810.              EISA             EISA
  811.                 Extended industry standard architecture
  812.                    Also, a standard that defines the architecture of (and
  813.                    interface to) the extended PC bus. See also ISA.
  814.  
  815.              event object             event object
  816.                 A user-mode object upon which one or more threads can wait
  817.                 until the event is set to the Signaled state. Every user-
  818.                 mode event object is implemented through the use of a
  819.                 kernel-mode event object.
  820.                 A kernel-mode event object is an instance of a Kernel-
  821.                 defined dispatcher object type. Each kernel-mode event can
  822.                 be classified as either of the following:
  823.                 1  When a synchronization event (a.k.a. "autoclearing                          _____________________
  824.                    event") is set to the Signaled state, a single thread
  825.                    that was waiting on the event is released (its dispatch
  826.                    state transitions from waiting to ready, standby, or
  827.                    running), and an autoreset to Not-Signaled occurs.
  828.                 2  When a notification event is set to the Signaled state,                          __________________
  829.                    all threads that were waiting on the event are released,
  830.                    and the event remains in the Signaled state until an
  831.                    explicit reset to Not-Signaled occurs.
  832.  
  833.              exception             exception
  834.                 A synchronous error condition, resulting from the execution
  835.                 of a particular machine instruction. See also SEH.
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.         G-14     Kernel-mode Driver Design Guide        G-14     Kernel-mode Driver Design Guide
  865.  
  866.  
  867.         executive        executive
  868.            The collection of components that form the base NT operating
  869.            system. Executive components include the Executive Support,
  870.            Kernel, Memory Manager, Cache Manager, Process Structure,
  871.            Interprocess Communication (LPC and RPC), Object Manager,
  872.            I/O Manager, Configuration Manager, Hardware Abstraction
  873.            Layer, and Security Reference Monitor.  Each executive
  874.            component except the Executive Support, Cache Manager, and
  875.            Hardware Abstraction Layer supplies a specialized set of
  876.            native user-mode system services, and every executive
  877.            component exports a set of kernel-mode functions for use by
  878.            other executive components.
  879.               NT drivers also call kernel-mode functions supplied by
  880.               executive components, including (but not limited to)
  881.               functions beginning with the prefix "Ex" for Ex(ecutive)                                                           Ex
  882.               Support. Other kernel-mode functions of interest to
  883.               drivers begin with the prefixes: Hal, Ke(rnel), Ps (for                                               Hal  Ke        Ps
  884.               Process Structure), Ob(ject), Io, Mm (for Memory                                  Ob        Io  Mm              _       _                                 _
  885.               Manager), Cc (for Cache Manager), Se(curity) and FsRtl                        Cc                      Se             FsRtl              _                 _ _
  886.               (for File System Run-time Library). See also Zw routines.                   _    _      _   _   __
  887.            Note that NT drivers, including kernel-mode device,
  888.            intermediate, and file system drivers, are considered part
  889.            of the NT executive after they are loaded. The "operating
  890.            system" visible to end users is actually a protected
  891.            subsystem that runs in user mode on top of the NT executive;
  892.            the executive is hidden from end users by a subsystem-
  893.            supplied interface that emulates Windows, POSIX, or some
  894.            other operating system.
  895.  
  896.         FAT        FAT
  897.            File allocation table
  898.               (adjective: an NT-installable file system that was native
  899.               to DOS; also, a type of disk partition)
  900.  
  901.         fault tolerance        fault tolerance
  902.            An optional feature of the Windows NT operating system
  903.            environment, which includes the end-user-visible Windows
  904.            DiskMan utility supported by an NT-supplied intermediate
  905.            driver that handles disk partition mirroring, striping, and
  906.            volume set management.
  907.  
  908.         FCB        FCB
  909.            File control block
  910.               An internal FS structure in which a file system maintains
  911.               state for an open file.
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.                             Glossary of Terms and Acronyms     G-15                                 Glossary of Terms and Acronyms     G-15     
  931.  
  932.  
  933.              file object             file object
  934.                 A user-mode object that represents an open instance of a
  935.                 file, device, directory, or volume that is accessed through
  936.                 the file handle returned by a protected subsystem's function
  937.                 that calls down to a system service that opens (or creates)
  938.                 a file object . Every file handle contains a "hidden"
  939.                 kernel-mode event object, so that callers of the I/O system
  940.                 services can wait on a file handle.
  941.                 At any given moment, several file objects can be associated
  942.                 with a single, shared data file, but each such file object
  943.                 has a unique handle and maintains an object-specific value
  944.                 for the current file pointer.
  945.                    A file object is sometimes called a "persistent object"
  946.                    because the (file, device, directory, or volume) entity
  947.                    that backs any run-time set of file objects is retained
  948.                    across system boots.
  949.  
  950.              FS             FS
  951.                 File system
  952.                    An FS is a file system driver that registers itself with
  953.                    the NT I/O Manager as an active file system. Unlike many
  954.                    other operating systems, NT does not have a particular
  955.                    must-be-resident file system, and several NT file systems
  956.                    can be active at the same time. NT file systems are
  957.                    dynamically located when a volume is mounted or when a
  958.                    remote name is being resolved: the I/O Manager calls the
  959.                    registered FSs in turn until one file system "recognizes"
  960.                    the volume structure or remote name.
  961.                    Examples of NT-supplied file systems are FAT, HPFS, NTFS,
  962.                    CDFS, the LAN Manager redirector, NPFS (named pipe file
  963.                    system), and RAW.
  964.  
  965.              FSD             FSD
  966.                 File system driver
  967.                    The FSD refers to the portion of a driver that executes
  968.                    in the context of the caller, to which an I/O request is
  969.                    dispatched when the request is originally made. The FSD
  970.                    has no process virtual address space and no particular
  971.                    thread context because it operates in the context of
  972.                    whoever happens to call it.
  973.                    An FSD also executes in the context of the lower-level
  974.                    (intermediate or mass storage device) driver's DPC
  975.                    routine when the I/O operation is being completed if the
  976.                    FSD indicated that it should be called upon completion of
  977.                    the IRP.
  978.                    The term FSD normally refers to the DD (device driver)
  979.                    part of a file system driver only when the driver also
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.         G-16     Kernel-mode Driver Design Guide        G-16     Kernel-mode Driver Design Guide
  997.  
  998.  
  999.               has an FSP associated with it; otherwise, it's called
  1000.               simply a device driver.
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.                             Glossary of Terms and Acronyms     G-17                                 Glossary of Terms and Acronyms     G-17     
  1063.  
  1064.  
  1065.              FSP             FSP
  1066.                 File system process
  1067.                    The FSP usually refers to a set of device-dedicated or
  1068.                    system worker threads that aid a file system driver (FSD)
  1069.                    in getting work done, but can also refer to a kernel-mode
  1070.                    process set up by an FSD. FSP threads are generally used
  1071.                    when a file system driver needs a thread context in which
  1072.                    to work. An example is when the driver needs to be able
  1073.                    to wait without tying up the calling thread. An FSP
  1074.                    kernel-mode process is used only when an FSD must have a
  1075.                    driver-specific process address space in which its
  1076.                    device-dedicated threads execute. (Most NT file system
  1077.                    drivers conserve system memory by not creating their own                                                     ___
  1078.                    kernel-mode processes.)
  1079.                    Communication between the FSD and the FSP threads is
  1080.                    performed through the use of a communication region. This
  1081.                    region is generally allocated in a device object's device
  1082.                    extension and consists of an interlocked queue and a
  1083.                    synchronization event. See also device object, device
  1084.                    extension, and event object.
  1085.                    Note that any NT driver (not just file systems) can
  1086.                    create one or more device-dedicated threads or use system
  1087.                    worker threads. In particular, an NT driver should create
  1088.                    a thread for I/O operations that use synchronization
  1089.                    mechanisms (such as events, timers, semaphores, mutexes,
  1090.                    etc.) other than spin locks. Such a driver's thread can
  1091.                    wait for an indefinite, nonzero interval on a Kernel-
  1092.                    defined dispatcher object, but context switches to the
  1093.                    thread slow down the driver's I/O operations.
  1094.  
  1095.              GUID             GUID
  1096.                 Globally unique identifier
  1097.                    See SID.
  1098.  
  1099.              HAL             HAL
  1100.                 Hardware abstraction layer
  1101.                    An NT executive component that provides platform-specific
  1102.                    support for the NT Kernel, I/O Manager, kernel-mode
  1103.                    debuggers, and lowest-level device drivers. The HAL
  1104.                    exports routines that abstract platform-specific hardware
  1105.                    details about caches, I/O buses, interrupts, etc. and
  1106.                    provides an interface between the platform's hardware and
  1107.                    the system software. For example, the HAL implements a
  1108.                    routine to map each device driver's bus-relative device
  1109.                    interrupt vector to a system-assigned vector with a
  1110.                    corresponding platform-specific hardware priority
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.         G-18     Kernel-mode Driver Design Guide        G-18     Kernel-mode Driver Design Guide
  1129.  
  1130.  
  1131.               (DIRQL), as well as several routines that provide DMA-
  1132.               transfer support.
  1133.  
  1134.         hardware exception        hardware exception
  1135.            See SEH.
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.                             Glossary of Terms and Acronyms     G-19                                 Glossary of Terms and Acronyms     G-19     
  1195.  
  1196.  
  1197.              HBA             HBA
  1198.                 Host bus adapter
  1199.                    A hardware device that "connects" NT and a SCSI bus. A
  1200.                    SCSI HBA driver usually manages the lower layers of the
  1201.                    SCSI-II protocol. See miniport driver; see also port
  1202.                    driver, class driver, and SCSI.
  1203.  
  1204.              HPFS             HPFS
  1205.                 High performance file system
  1206.                    An NT-supplied installable file system
  1207.  
  1208.              hyperspace             hyperspace
  1209.                 A block of virtual memory somewhere in kernel space,
  1210.                 dedicated to the use of the NT Memory Manager. Every
  1211.                 instance of a user-mode virtual address space has an
  1212.                 associated hyperspace area where the Memory Manager
  1213.                 maintains internal data (such as page table pages and WSLs)
  1214.                 for the current process. See also kernel space and user
  1215.                 space.
  1216.  
  1217.              IDB             IDB
  1218.                 Interrupt dispatch block
  1219.                    An internal structure used by the NT Kernel.
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.         G-20     Kernel-mode Driver Design Guide        G-20     Kernel-mode Driver Design Guide
  1261.  
  1262.  
  1263.         IDT        IDT
  1264.            Interrupt dispatch table
  1265.               A Kernel-defined call table with a platform-dependent
  1266.               number of first-level entries (some for DIRQL ISRs) and
  1267.               second-level entries for interrupt transfer routines
  1268.               (dependent on a first-level ISR). For symmetric
  1269.               multiprocessor platforms, the Kernel sets up an IDT for
  1270.               each processor. See also multiprocessor machine.
  1271.               The NT Kernel reserves eight first-level entries per IDT
  1272.               for its own use; the remaining first-level entries can be
  1273.               connected to a platform-specific bus interrupt by the HAL
  1274.               or to a device interrupt. The Kernel's reserved entries
  1275.               (in low-to-high IRQL priority) are defined by the
  1276.               following constants:
  1277.               n   PASSIVE_LEVEL - execute thread.              n
  1278.               n   APC_LEVEL - execute special Kernel APC.              n
  1279.               n   DISPATCH_LEVEL - dispatch (execute DPC).              n
  1280.               n   WAKE_LEVEL - debugger execution.              n
  1281.               n   CLOCK2_LEVEL - interval-timer execution.              n
  1282.               n   REQUEST_LEVEL - interprocessor request.              n
  1283.               n   POWER_LEVEL - power failure notification.              n
  1284.               n   HIGH_LEVEL - machine checks or bus errors.              n
  1285.               The set of software and hardware interrupt vectors mapped
  1286.               to these constants is platform-dependent, but none can be
  1287.               connected to a driver's interrupt object. Note that the
  1288.               constants PASSIVE_LEVEL through DISPATCH_LEVEL and
  1289.               WAKE_LEVEL correspond to software interrupt vectors.
  1290.               DIRQLs for device drivers usually have IRQL priority
  1291.               higher than DISPATCH_LEVEL but lower than CLOCK2_LEVEL.
  1292.  
  1293.         IFS        IFS
  1294.            Installable file system
  1295.               See FS.
  1296.  
  1297.         integral subsystem        integral subsystem
  1298.            A protected subsystem (server) that performs an essential
  1299.            operating system task. For NT, this group includes the Local
  1300.            Security Authority, the Security Accounts Manager, the
  1301.            Session Manager, and the network server. See also protected
  1302.            subsystem.
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.                             Glossary of Terms and Acronyms     G-21                                 Glossary of Terms and Acronyms     G-21     
  1327.  
  1328.  
  1329.              intermediate driver             intermediate driver
  1330.                 An intermediate driver processes I/O requests "between" the
  1331.                 highest-level driver (frequently an FS) and the lowest-level
  1332.                 driver that controls the hardware device for which the
  1333.                 request is bound. See also layered driver.
  1334.                    Examples of intermediate drivers include the NT ftdisk
  1335.                    driver, which supports fault tolerance, and many class
  1336.                    drivers.
  1337.  
  1338.              interrupt             interrupt
  1339.                 An asynchronous hardware signal, usually indicating that a
  1340.                 peripheral device needs service, that is detected by the
  1341.                 processor. An interrupt causes the processor to save state,
  1342.                 to branch to a fixed location, and to resume execution at
  1343.                 that location. See also IDT.
  1344.  
  1345.              interrupt object             interrupt object
  1346.                 A kernel-mode-only, Kernel-defined control object type, used
  1347.                 to connect a hardware interrupt source (see DIRQL) and an
  1348.                 ISR to an IDT entry, or to connect an ISR and an interrupt
  1349.                 transfer routine (dependent on the ISR at its IRQL) to a
  1350.                 second-level IDT entry.
  1351.                 Each interrupt object:
  1352.                 n  Can be associated with a single IDT entry (and,                n
  1353.                    therefore, with a single processor in a multiprocessor
  1354.                    machine).
  1355.                 n  Is either LevelSensitive or Latched, depending on the                n
  1356.                    platform or device.
  1357.                 n  Can be one of several interrupt objects associated with a                n
  1358.                    given IDT entry if and only if every interrupt object for
  1359.                    that entry is of a single type (LevelSensitive or
  1360.                    Latched).
  1361.                 For a second-level IDT entry, an ISR (e.g., for a bus
  1362.                 adapter) associated with a first-level IRQL routes the
  1363.                 interrupt to the (device-specific) interrupt transfer
  1364.                 routine for service via its entry in the IDT.
  1365.                 When more than one set of interrupt objects are connected to
  1366.                 the same first-level IDT entry, the corresponding ISRs are
  1367.                 called in the same order in which they were connected.
  1368.  
  1369.              invalid page             invalid page
  1370.                 A page-sized range of virtual addresses for which a page
  1371.                 fault occurs when any address in the range is referenced.
  1372.                 For NT drivers, referencing an invalid page causes a fatal
  1373.                 page fault unless the driver is running at an IRQL <
  1374.                 DISPATCH_LEVEL when the reference occurs.
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.         G-22     Kernel-mode Driver Design Guide        G-22     Kernel-mode Driver Design Guide
  1393.  
  1394.  
  1395.         I/O stack location        I/O stack location
  1396.            a.k.a. "stack location"
  1397.               An I/O stack location refers to the part of an IRP that
  1398.               is allocated for each driver in a chain of layered
  1399.               drivers. Each driver owns one of the stack locations in
  1400.               the packet and obtains driver-specific information about
  1401.               what I/O operation to carry out on the target device,
  1402.               using the supplied arguments. It is also used to store
  1403.               context about the driver during I/O completion so that
  1404.               the driver's I/O completion routine can perform its
  1405.               cleanup operations.
  1406.  
  1407.         I/O status block        I/O status block
  1408.            An I/O status block is a data structure that is part of each
  1409.            IRP. An I/O status block serves two purposes:
  1410.            1  For asynchronous system calls, it provides the user (or a
  1411.               higher-level driver's IoCompletion routine) a way of
  1412.               determining whether or not the service worked when the
  1413.               IRP is completed.
  1414.            2  It also provides more information about why the service
  1415.               either worked or did not work.
  1416.            The type definition of an I/O status block is as follows:
  1417.  
  1418.            typedef struct _IO_STATUS_BLOCK {
  1419.               NTSTATUS Status;
  1420.               ULONG Information;
  1421.            } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
  1422.  
  1423.            Upon completion of a system service, the Information member
  1424.            supplies the caller with more information about what
  1425.            actually occurred. For example, this member contains the
  1426.            number of bytes actually read from a file after a read
  1427.            operation.
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.                             Glossary of Terms and Acronyms     G-23                                 Glossary of Terms and Acronyms     G-23     
  1459.  
  1460.  
  1461.              IPC             IPC
  1462.                 Interprocess communication
  1463.                    In addition to synchronization primitives, the NT system
  1464.                    has two defined, message-passing mechanisms for IPC:
  1465.                    1   LPC, defining the port object type with a server
  1466.                        process that supplies system (port) services to local
  1467.                        (using the same physical memory on a single system)
  1468.                        client processes.
  1469.                    2   RPC, with an NT-supplied runtime library that
  1470.                        implements such RPC capabilities as binding a client
  1471.                        process in one address space with a server process in
  1472.                        another address space and sending necessary messages
  1473.                        to make a remote procedure call possible.
  1474.                    The system-supplied named pipe file system supports LPC.
  1475.                    The NT LAN Manager redirector also implements named pipes
  1476.                    as a transport layer to connect clients to application
  1477.                    servers (RPC).
  1478.  
  1479.              IRP             IRP
  1480.                 I/O request packet
  1481.                    An IRP is the basic I/O Manager structure used to
  1482.                    communicate with drivers and to allow drivers to
  1483.                    communicate with each other. A packet consists of two
  1484.                    different parts:
  1485.                    1   Header, or fixed portion of the packet - This is used                       ______     ___________________________
  1486.                        by the I/O Manager to store information about the
  1487.                        original request, such as the caller's parameters,
  1488.                        the address of the device object upon which the file
  1489.                        is open, etc. It is also used by drivers for storing
  1490.                        such information as the final status of the request.
  1491.                        See also I/O status block and device object.
  1492.                    2   I/O stack locations - Following the header is a set                       ___________________
  1493.                        of I/O stack locations, one per driver in the chain
  1494.                        of layered drivers for which the request is bound.
  1495.                        Each stack location contains the parameters, function
  1496.                        codes, and context used by the corresponding driver
  1497.                        to determine what it is supposed to be doing.
  1498.  
  1499.              IRQ             IRQ
  1500.                 A hardware line over which a peripheral device, bus
  1501.                 controller, other processor, or the Kernel signals a request
  1502.                 for service to the microprocessor. (IRQ is a common
  1503.                 abbreviation for "interrupt request lines.") See interrupt.
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.         G-24     Kernel-mode Driver Design Guide        G-24     Kernel-mode Driver Design Guide
  1525.  
  1526.  
  1527.         IRQL        IRQL
  1528.            Interrupt request level
  1529.               The hardware priority level at which a given kernel-mode
  1530.               routine runs, thereby "masking off" interrupts with
  1531.               equivalent and lower IRQL on the processor. Note that
  1532.               such a routine can be preempted by any interrupt with a
  1533.               higher IRQL. Note also that running at IRQL
  1534.               DISPATCH_LEVEL or higher prevents threads (even those
  1535.               with the highest real-time priority level) from running
  1536.               on the same processor until the current kernel-mode
  1537.               routine lowers IRQL. However, running at raised IRQL on a
  1538.               given processor has no effect on the IRQL priority of any
  1539.               other processor in a symmetric multiprocessor machine.
  1540.               See also IDT, interrupt object, IRQ, ISR, multiprocessor
  1541.               machine, and priority.
  1542.  
  1543.         ISA        ISA
  1544.            Industry standard architecture
  1545.               Also, a standard defining the architecture of the PC bus
  1546.               (a.k.a. "AT bus standard").
  1547.  
  1548.         ISR        ISR
  1549.            Interrupt service routine
  1550.               A routine whose function is to service a device when it
  1551.               generates an interrupt.
  1552.               An NT driver's ISR executes at raised IRQL, usually at
  1553.               the DIRQL of the interrupt object(s) set up for its
  1554.               device (i.e., drivers connected to second-level IDT
  1555.               entries execute at the IRQL of the first-level entry they
  1556.               connect to). Every NT driver's ISR should execute as
  1557.               quickly as possible, doing only what is necessary to save
  1558.               sufficient state, to make the device stop generating
  1559.               interrupts, and to queue a DPC that completes interrupt
  1560.               processing at a lower IRQL.
  1561.  
  1562.         kernel mode        kernel mode
  1563.            The privileged processor mode in which NT executive code
  1564.            runs. A driver or thread running in kernel mode has access
  1565.            to system memory and hardware. See also user mode.
  1566.  
  1567.         kernel space        kernel space
  1568.            (a.k.a. "system space")
  1569.               A block of virtual memory, dedicated to the use of
  1570.               kernel-mode code. Generally, the NT kernel space is a
  1571.               range of high-order virtual addresses around one gigabyte
  1572.               in size. See also hyperspace, pool memory, and user
  1573.               space.
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.                             Glossary of Terms and Acronyms     G-25                                 Glossary of Terms and Acronyms     G-25     
  1591.  
  1592.  
  1593.              key object             key object
  1594.                 A NT object type defined by the Configuration Manager that
  1595.                 represents an entry in the configuration registry database.
  1596.                 See also Registry.
  1597.  
  1598.              latched interrupt             latched interrupt
  1599.                 (a.k.a. "edge-triggered interrupt")
  1600.                    An interrupt that occurs at the transition from
  1601.                    deasserted to asserted on the IRQ line.
  1602.  
  1603.              layered driver             layered driver
  1604.                 One of a collection of drivers that respond to the same
  1605.                 IRPs. See also I/O stack location.
  1606.                    The term "layered driver" describes the highest-level and
  1607.                    lowest-level drivers in a chain of layered drivers that
  1608.                    process the same IRPs, along with all intermediate
  1609.                    drivers in the chain.
  1610.  
  1611.              LBN             LBN
  1612.                 Logical block number
  1613.                    A logical block number identifies a physical block on a
  1614.                    disk, using a logical address rather than physical disk
  1615.                    values (for cylinder, track, and sector). For a disk with
  1616.                    N blocks (a.k.a. "sectors"), the corresponding LBNs are 0
  1617.                    through (N - 1). See also MCB and VBN.
  1618.  
  1619.              level-sensitive interrupt             level-sensitive interrupt
  1620.                 An interrupt that occurs when the signal is asserted on the
  1621.                 IRQ line.
  1622.  
  1623.              LPC             LPC
  1624.                 Local procedure call
  1625.                    See also IPC and port object.
  1626.  
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.         G-26     Kernel-mode Driver Design Guide        G-26     Kernel-mode Driver Design Guide
  1657.  
  1658.  
  1659.         little-endian        little-endian
  1660.            Refers to a memory architecture in which the byte layout is
  1661.            as follows:
  1662.            n  Byte N is the least significant (and, in conventional           n
  1663.               layout diagrams, the "rightmost") byte of:
  1664.               n   A word composed of bytes N and (N + 1).              n
  1665.               n   A double word composed of bytes N, (N + 1), (N + 2),              n
  1666.                   and (N + 3).
  1667.               n   A K-byte memory entity composed of bytes N, (N +              n
  1668.                   1),...,(N + K - 1).
  1669.            n  The address of the preceding word, double word, or K-byte           n
  1670.               entity is its least significant byte, N.
  1671.            Intel microprocessors always support little-endian
  1672.            addressing.  A MIPS-based machine can be configured for
  1673.            either big-endian or little-endian addressing. For a little-
  1674.            endian configuration, the least significant bit of a 16-bit
  1675.            short value is the "rightmost" bit at byte N, while the most           short
  1676.            significant bit is the "leftmost" bit of byte (N + 1). See
  1677.            also big-endian.
  1678.  
  1679.         LSA        LSA
  1680.            Local Security Authority
  1681.  
  1682.         LU        LU
  1683.            Logical unit
  1684.               From a SCSI-II HBA driver's point of view, a physical or
  1685.               virtual peripheral device, addressable through a TID,
  1686.               attached to a SCSI bus.
  1687.  
  1688.         LUID        LUID
  1689.            Locally unique identifier
  1690.               See SID.
  1691.  
  1692.         MACL        MACL
  1693.            Mandatory access control list
  1694.               A part of the security descriptor for each object in a
  1695.               system with a B1 or higher security rating from the U.S.
  1696.               National Computer Security Center.
  1697.  
  1698.         map        map
  1699.            (1) To translate a virtual or logical address into a
  1700.            physical address. See also MDL.
  1701.            (2) To alias a bus-relative interrupt vector to a system-
  1702.            assigned interrupt vector. See also HAL.
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.                             Glossary of Terms and Acronyms     G-27                                 Glossary of Terms and Acronyms     G-27     
  1723.  
  1724.  
  1725.              MCB             MCB
  1726.                 Map control block
  1727.                    An MCB is a structure provided by the FsRtl (File System                                                         FsRtl                                                                _    _
  1728.                    Run-time Library) package to aid NT file systems in                   _   _    _
  1729.                    mapping the VBNs for a file to the corresponding LBNs on
  1730.                    the disk.
  1731.  
  1732.              MDL             MDL
  1733.                 Memory descriptor list
  1734.                    A memory descriptor list uses an array of physical page
  1735.                    frame numbers (PFNs) to describe the pages that back a
  1736.                    virtual memory range.
  1737.  
  1738.              method             method
  1739.                 A routine supplied with an NT object type that handles
  1740.                 standard operations (such as open, close, delete, parse,
  1741.                 dump, and read or reset security attributes) on every
  1742.                 instance of the object type.
  1743.  
  1744.              MIDI             MIDI
  1745.                 Musical instrument digital interface
  1746.  
  1747.              miniport driver             miniport driver
  1748.                 (1) An HBA-specific driver, linked against the NT-supplied
  1749.                 SCSI port driver, that drives a SCSI bus.
  1750.                 (2) A video-adapter-specific driver, linked against the NT-
  1751.                 supplied video port driver.
  1752.  
  1753.              mirror driver             mirror driver
  1754.                 a.k.a. "shadow driver"
  1755.                    An intermediate (layered somewhere between an FSD and a
  1756.                    disk DD) device driver whose responsibility is to keep a
  1757.                    duplicate of a disk partition.
  1758.  
  1759.              mount             mount
  1760.                 Operation that requests a file system to make a volume
  1761.                 useable by the I/O Manager. This is done by filling in the
  1762.                 information in a VPB which indicates the serial number and
  1763.                 label of the volume, as well as by filling in the pointer to
  1764.                 the file system's device object that represents the "volume"
  1765.                 mounted on the real device.
  1766.  
  1767.  
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.         G-28     Kernel-mode Driver Design Guide        G-28     Kernel-mode Driver Design Guide
  1789.  
  1790.  
  1791.         multiprocessor machine        multiprocessor machine
  1792.            A platform with more than one CPU. NT is designed to run on
  1793.            multiprocessor machines, usually configured to be:
  1794.            n  Homogenous - all CPUs are identical, and either all have           n              __________
  1795.               identical coprocessors or none has a coprocessor.
  1796.            n  Closely coupled - all CPUs share memory and have uniform           n              _______________
  1797.               access to memory.
  1798.            n  Symmetric - every CPU can access memory, handle any           n              _________
  1799.               interrupt, and access I/O control registers just like
  1800.               every other CPU in the system. Note that any version of
  1801.               NT that runs on a symmetric multiprocessor machine also
  1802.               runs unchanged on a uniprocessor machine based on the                   _________
  1803.               same CPU.
  1804.               While NT can run on asymmetric platforms, configured with                                  __________
  1805.               a master CPU that handles all IRQs and one or more slave
  1806.               CPUs as long as the platform is both homogenous and
  1807.               closely coupled, the system has been designed to run
  1808.               primarily on symmetric multiprocessor platforms because
  1809.               SMP machines have better performance characteristics,
  1810.               particularly for I/O.
  1811.  
  1812.         mutex object        mutex object
  1813.            A kernel-mode-only, Kernel-defined dispatcher object type,
  1814.            used to provide mutually-exclusive, deadlock-free access to
  1815.            a resource.
  1816.               A mutex owner (thread) must run exclusively in kernel
  1817.               mode while it retains ownership; an attempt to switch to
  1818.               user mode while holding a mutex causes a system crash.
  1819.               Ownership of a mutex by a given thread has the following
  1820.               effects:
  1821.               n   Prevents the owning thread's process from leaving the              n
  1822.                   balance set.
  1823.               n   Raises the owning thread's priority to the the lowest              n
  1824.                   real-time priority value if the owning thread's
  1825.                   priority is not already higher.
  1826.               n   Prevents the delivery of normal kernel-mode APCs.              n
  1827.               Each mutex object has an associated level value, and a
  1828.               given thread may acquire ownership of a mutex if and only
  1829.               if:
  1830.               n   The requested mutex is currently unowned.              n
  1831.               n   The requesting thread does not already own a mutex of              n                                             ___
  1832.                   a (numerically) higher level.
  1833.               These requirements, and the requirement that a mutex
  1834.               owner run exclusively in kernel mode, prevent deadlocks.
  1835.               Note that recursive ownership of a mutex is possible.
  1836.               However, any thread that claims a mutex N times must
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.                             Glossary of Terms and Acronyms     G-29                                 Glossary of Terms and Acronyms     G-29     
  1855.  
  1856.  
  1857.                    explicitly release that mutex N times in order to set the
  1858.                    mutex to the Signaled state.
  1859.  
  1860.  
  1861.  
  1862.  
  1863.  
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869.  
  1870.  
  1871.  
  1872.  
  1873.  
  1874.  
  1875.  
  1876.  
  1877.  
  1878.  
  1879.  
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885.  
  1886.  
  1887.  
  1888.  
  1889.  
  1890.  
  1891.  
  1892.  
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.         G-30     Kernel-mode Driver Design Guide        G-30     Kernel-mode Driver Design Guide
  1921.  
  1922.  
  1923.         native services        native services
  1924.            See system services.
  1925.  
  1926.         NLS        NLS
  1927.            National language support
  1928.               A set of routines that give applications access to
  1929.               locale-specific information. See also Unicode.
  1930.  
  1931.         nonpaged pool        nonpaged pool
  1932.            See pool memory.
  1933.  
  1934.         NTFS        NTFS
  1935.            NT file system
  1936.               A file system, native to NT, that supports file system
  1937.               and file data recovery, extremely large storage media,
  1938.               and various other features.
  1939.  
  1940.         object        object
  1941.            A single, run-time instance of a system-defined object type.
  1942.            Objects visible in user mode include process, thread,
  1943.            section, file, event, semaphore, key, timer, port, object
  1944.            directory, symbolic link, and token objects.
  1945.            Many user-mode objects are implemented through the use of a
  1946.            corresponding kernel-mode object, including processes,
  1947.            threads, events, semaphores, and timers. Other user-mode
  1948.            objects contain "hidden" kernel-mode objects, such as the
  1949.            event associated with each file object.
  1950.               Kernel-mode-only objects include APC, DPC, device queue,
  1951.               interrupt, mutex, driver, device, adapter, controller,
  1952.               and stream file objects.
  1953.  
  1954.         object directory object        object directory object
  1955.            A type defined by the Object Manager and used to implement
  1956.            hierarchical object names.
  1957.               Note that file system directories are implemented as NT
  1958.               file objects, not as object directory objects.
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.                             Glossary of Terms and Acronyms     G-31                                 Glossary of Terms and Acronyms     G-31     
  1987.  
  1988.  
  1989.              object type             object type
  1990.                 An opaque data structure that defines a protected entity
  1991.                 implemented and manipulated by the operating system. See
  1992.                 also opaque.
  1993.                    Every user-visible object has:
  1994.                    n   A type (whose name must be unique).                   n
  1995.                    n   Two parts:                   n
  1996.                        1  A header operated on by the NT Object Manager.                            ______
  1997.                        2  A body operated on by type-specific system                            ____
  1998.                           services. For example, the system service that
  1999.                           reads a file operates on an open file object.
  2000.                    n   A set of standardized rules for object creation,                   n
  2001.                        deletion, protection, access, management, and naming.
  2002.                    User-visible objects can contain "hidden" kernel-mode
  2003.                    objects. For example, a user-mode thread can wait on a
  2004.                    file handle because it contains a hidden, kernel-mode
  2005.                    event object.
  2006.                    Kernel-mode objects are visible to (and directly
  2007.                    accessible only by) the executive component that defined
  2008.                    a given object type. They are are indirectly accessible
  2009.                    to other kernel-mode code through the type-specific
  2010.                    functions exported by the defining component (e.g.,
  2011.                    KeInitializeDeviceQueue operates on device queue                   KeInitializeDeviceQueue
  2012.                    objects).
  2013.  
  2014.              opaque             opaque
  2015.                 Pertains to any data structure (including NT objects)
  2016.                 defined with a deliberately hidden internal structure that
  2017.                 is known only to the executive component that defined the
  2018.                 type. However, the defining component supplies system
  2019.                 services and, usually, kernel-mode functions to manipulate
  2020.                 opaque objects. User-mode data types can also be opaque.
  2021.  
  2022.              paging file             paging file
  2023.                 A system file containing the contents of virtual pages that
  2024.                 have been paged out of memory. See also backing store.
  2025.  
  2026.              page frame             page frame
  2027.                 A block of contiguous physical addresses used to store the
  2028.                 contents of a virtual page. Note that the virtual page size
  2029.                 and page frame size are usually identical, but that a page
  2030.                 frame size is actually microprocessor-dependent.
  2031.  
  2032.              paged pool             paged pool
  2033.                 See pool memory.
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.         G-32     Kernel-mode Driver Design Guide        G-32     Kernel-mode Driver Design Guide
  2053.  
  2054.  
  2055.         PCR        PCR
  2056.            Processor control registers
  2057.               An internal data structure in which the Kernel stores
  2058.               per-processor information.
  2059.  
  2060.         PEB        PEB
  2061.            Process environment block
  2062.  
  2063.         PFN        PFN
  2064.            Page frame number
  2065.               Also, the database in which the NT Memory Manager
  2066.               maintains information about every physical page in the
  2067.               system. Each PFN is an index for a physical page in the
  2068.               array of records that makes up the PFN database. See also
  2069.               PTE.
  2070.  
  2071.         PIO        PIO
  2072.            Programmed I/O
  2073.  
  2074.         polling        polling
  2075.            A pernicious, but sometimes necessary, coding technique that
  2076.            wastes CPU cycles in a driver until the physical device
  2077.            updates its registers. NT device drivers should never
  2078.            implement polling loops and should minimize the interval
  2079.            they specify in calls to KeStallExecutionProcessor (no                                    KeStallExecutionProcessor
  2080.            longer than 50 microseconds) if they must poll their
  2081.            devices.
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.                             Glossary of Terms and Acronyms     G-33                                 Glossary of Terms and Acronyms     G-33     
  2119.  
  2120.  
  2121.              pool memory             pool memory
  2122.                 Regions located in kernel space from which memory blocks can
  2123.                 be allocated and deallocated dynamically (some other systems
  2124.                 call this "heap memory"). The NT Memory Manager creates two
  2125.                 kinds of pools for system use and for use by drivers via
  2126.                 Ex(ecutive) Support function calls:                Ex
  2127.                 1  Paged pool is a based region that can be paged in and out                   __________
  2128.                    of a process's working set. Each process has its own set
  2129.                    of PTEs that map paged pool into its address space.
  2130.                    Touching a page in this pool can cause a page fault at
  2131.                    any time, so drivers should allocate only those data
  2132.                    structures accessed exclusively at IRQL PASSIVE_LEVEL or
  2133.                    APC_LEVEL (see IDT) from paged pool.
  2134.                 2  Nonpaged pool is a based region for which all processes                   _____________
  2135.                    share a set of PTEs. The NT Memory Manager guarantees
  2136.                    that nonpaged pool is resident in physical memory at all
  2137.                    times; therefore, this region can be accessed from any
  2138.                    process's address space without causing a page fault.
  2139.                    However, nonpaged pool is a limited system resource.
  2140.                 Drivers should allocate from paged pool for entities that
  2141.                 are accessed exclusively at or below IRQL APC_LEVEL. They
  2142.                 should minimize their usage of nonpaged pool by "saving" it
  2143.                 for data that must be accessed at or above IRQL
  2144.                 DISPATCH_LEVEL. Allocations of contiguous or noncached
  2145.                 memory come from nonpaged pool.
  2146.                 The Memory Manager allocates entities from both pools using
  2147.                 a buddy scheme. See also kernel space.
  2148.  
  2149.              port object             port object
  2150.                 An instance of an object type representing a conduit for
  2151.                 messages between local (server/client) processes. It is used
  2152.                 in the LPC (Local Procedure Call) model of NT as an object                            _     _         _
  2153.                 accessible to user-mode processes through system services.
  2154.                 The server (callee) process defines a named connection port
  2155.                 object and sets up two (unnamed) communication port objects
  2156.                 when a client (caller) process connects to the named port.
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.         G-34     Kernel-mode Driver Design Guide        G-34     Kernel-mode Driver Design Guide
  2185.  
  2186.  
  2187.         port driver        port driver
  2188.            (1) An NT-supplied SCSI driver that supports a set of class
  2189.            drivers above it and one or more HBA-specific miniport
  2190.            drivers, which link themselves to the NT-dependent port
  2191.            driver (implemented as a dynamic-link library) and call its
  2192.            ScsiPortXxx routines.           ScsiPort                   ___
  2193.            (2) An NT-supplied video adapter driver that supports a
  2194.            user-level display driver and one or more adapter-specific
  2195.            miniport drivers, which link themselves to the OS-dependent
  2196.            port driver (implemented as a dynamic-link library) and call
  2197.            its VideoPortXxx routines.               VideoPort                        ___
  2198.            (3) A lowest-level device driver whose device is a so-called
  2199.            "intelligent controller" or a bus adapter. A port driver
  2200.            communicates with one or more class drivers according to an
  2201.            established protocol and synchronizes access to the
  2202.            controller or bus.
  2203.            (4) A lowest-level physical device driver that responds to a
  2204.            set of system-defined device I/O control requests (and,
  2205.            possibly an additional set of driver-defined internal I/O
  2206.            control requests) sent down by a corresponding class driver.
  2207.            See also class driver and miniport driver.
  2208.  
  2209.         POSIX        POSIX
  2210.            Portable operating system for (UN)IX
  2211.  
  2212.         PRCB        PRCB
  2213.            Processor control block           __        _       _
  2214.               An extension of the PCR.
  2215.  
  2216.         priority        priority
  2217.            An attribute of a thread that determines when and how often
  2218.            it is scheduled to run. For a running thread, its priority
  2219.            falls into either of two classes, each class with 16 levels:
  2220.            1  Variable priority class has values in the range 0 to 15.              ________ ______________
  2221.               This class is used by most threads.
  2222.               Threads with variable priority are always preemptible
  2223.               (scheduled to run round-robin with other threads at the
  2224.               same level). In general, the Kernel manages a variable-
  2225.               priority thread as follows: when the thread is
  2226.               interactive with a user, its priority is high (given a
  2227.               boost); otherwise, its priority decays (by one level per
  2228.               quantum the thread runs) until it reaches its original
  2229.               (programmer-defined) base level.
  2230.            2  Real-time priority class has values in the range 16 to              ________________________
  2231.               31. This class is used by time-critical threads, making
  2232.               such a thread preemptible only by a thread with higher
  2233.               priority. Note that a thread running at the highest real-
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.                             Glossary of Terms and Acronyms     G-35                                 Glossary of Terms and Acronyms     G-35     
  2251.  
  2252.  
  2253.                    time priority level could be preempted by a special
  2254.                    Kernel APC if an APC_LEVEL interrupt occurs.
  2255.  
  2256.  
  2257.  
  2258.  
  2259.  
  2260.  
  2261.  
  2262.  
  2263.  
  2264.  
  2265.  
  2266.  
  2267.  
  2268.  
  2269.  
  2270.  
  2271.  
  2272.  
  2273.  
  2274.  
  2275.  
  2276.  
  2277.  
  2278.  
  2279.  
  2280.  
  2281.  
  2282.  
  2283.  
  2284.  
  2285.  
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.         G-36     Kernel-mode Driver Design Guide        G-36     Kernel-mode Driver Design Guide
  2317.  
  2318.  
  2319.         priority boosts        priority boosts
  2320.            A set of system-defined constant values, supplied when
  2321.            certain device drivers complete an IRP. In general, drivers
  2322.            for interactive devices call IoCompleteRequest with a                                        IoCompleteRequest
  2323.            device-type-specific priority boost value. The boost is
  2324.            added to the priority of the user-mode thread that
  2325.            originally requested the I/O operation, in order to
  2326.            compensate for that thread's assumed wait on the I/O.
  2327.  
  2328.         probe        probe
  2329.            To check whether a memory access of a particular kind (e.g.,
  2330.            read) to data (e.g., a handle for an object or a buffer) is
  2331.            allowed without causing an access violation. Note that user-
  2332.            supplied argument values are always probed and captured (on
  2333.            the system stack) before an NT system service gets control
  2334.            in kernel mode. The system service is responsible for
  2335.            probing whatever a captured pointer accesses.
  2336.  
  2337.         process object        process object
  2338.            A Kernel-defined control object type, representing the
  2339.            virtual address space and control information necessary for
  2340.            the execution of a set of thread objects. A user-mode
  2341.            process object defines the base priority, default affinity,
  2342.            and directory table base value for its threads and for any
  2343.            child processes it creates. Every user-visible process
  2344.            object is implemented through the use of an embedded kernel-
  2345.            mode process object.
  2346.               A kernel-mode-only process object must be initialized
  2347.               before any thread objects that belong to the process.
  2348.               At any given moment, a process is either part of the
  2349.               balance set (Included) or not (Excluded). A kernel-mode
  2350.               process must remain in the balance set as long as any of
  2351.               its threads owns a mutex object. Each thread owning one
  2352.               or more mutexes continues to run until it releases its
  2353.               last mutex, when the thread is suspended. The process is
  2354.               not removed from the balance set until every thread has              ___
  2355.               released all mutexes.
  2356.  
  2357.         protected subsystem        protected subsystem
  2358.            A server that performs operating system functions or that
  2359.            emulates another operating system, such as WindowsTM or
  2360.            POSIX, on top of the NT executive. See also integral
  2361.            subsystem.
  2362.  
  2363.         PTE        PTE
  2364.            Page table entry
  2365.  
  2366.  
  2367.  
  2368.  
  2369.  
  2370.  
  2371.  
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382.                             Glossary of Terms and Acronyms     G-37                                 Glossary of Terms and Acronyms     G-37     
  2383.  
  2384.  
  2385.                    The Memory Manager uses a PTE to represent the state of a
  2386.                    virtual page.
  2387.  
  2388.  
  2389.  
  2390.  
  2391.  
  2392.  
  2393.  
  2394.  
  2395.  
  2396.  
  2397.  
  2398.  
  2399.  
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.  
  2410.  
  2411.  
  2412.  
  2413.  
  2414.  
  2415.  
  2416.  
  2417.  
  2418.  
  2419.  
  2420.  
  2421.  
  2422.  
  2423.  
  2424.  
  2425.  
  2426.  
  2427.  
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.         G-38     Kernel-mode Driver Design Guide        G-38     Kernel-mode Driver Design Guide
  2449.  
  2450.  
  2451.         pulse        pulse
  2452.            To set an event to the Signaled state, satisfy as many
  2453.            waiters on the event as possible, and to reset the event to
  2454.            the Not-Signaled state.
  2455.  
  2456.         quantum        quantum
  2457.            a.k.a. "time slice"
  2458.               A brief period of time during which a given thread
  2459.               executes in a multitasking operating system.
  2460.  
  2461.         quota        quota
  2462.            For each process, NT sets a limit on certain system
  2463.            resources the process's threads can use, including quotas
  2464.            for paging-file, paged-pool, and nonpaged-pool usage, as
  2465.            well as for CPU time. As the process's threads run, the
  2466.            Kernel subtracts the CPU time used from the quota. The
  2467.            Memory Manager "charges quota" against the process as its
  2468.            threads use page-file, paged-pool, or nonpaged-pool memory;
  2469.            it also updates these values when threads release memory.
  2470.  
  2471.         raise an exception        raise an exception
  2472.            A deliberate transfer of control to an exception handler
  2473.            when an exception occurs. A kernel-mode component, including
  2474.            any NT driver, cannot raise an exeception while running at
  2475.            IRQL > APC_LEVEL without bringing down the system. See also
  2476.            SEH.
  2477.  
  2478.         range        range
  2479.            A finite and discrete sequence of values. Note that a
  2480.            virtual address range can be backed by a set of
  2481.            discontiguous physical pages or by a file stored in
  2482.            discontiguous sectors on disk.
  2483.  
  2484.         RAW        RAW
  2485.            An NT-supplied file system that is the "last resort" for all
  2486.            NT I/O requests requiring file system support. When the I/O
  2487.            Manager calls active NT file systems to mount a volume, RAW
  2488.            file system driver is always called last, because it
  2489.            recognizes all disk and tape media. However, RAW supplies
  2490.            very primitive file handling capabilities. For example, it
  2491.            treats the whole disk as a single file and supplies
  2492.            physical-disk-level VBN access to the disk.
  2493.               RAW is not an acronym.
  2494.  
  2495.         redirector        redirector
  2496.            An NT (network) file system driver that provides access to
  2497.            files on remote machines.
  2498.  
  2499.  
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.                             Glossary of Terms and Acronyms     G-39                                 Glossary of Terms and Acronyms     G-39     
  2515.  
  2516.  
  2517.              region             region
  2518.                 A range of virtual addresses.
  2519.                    When a user-mode caller creates a section or maps a view,
  2520.                    it must specify a region. The NT Memory Manager rounds
  2521.                    the specified region's starting address down to the
  2522.                    nearest host-alignment boundary and rounds its size in
  2523.                    bytes up to the next host-page-size boundary.
  2524.  
  2525.              registry             registry
  2526.                 a.k.a. "configuration registry"
  2527.                    A database containing configuration and control data for
  2528.                    the system, including which file systems and drivers to
  2529.                    load at system boot. The NT Configuration Manager exports
  2530.                    system services to manipulate registry key objects
  2531.                    contained in the database.
  2532.  
  2533.              resource             resource
  2534.                 An entity (such as a device object, file object, section
  2535.                 object, variable, structure, or buffer) visible to one or
  2536.                 more processes.
  2537.                    In kernel mode, a shared resource is a multiprocessor-
  2538.                    safe synchronization mechanism, rather like a gating
  2539.                    semaphore with a dynamic limit value. Drivers can use
  2540.                    system-supplied Ex(ecutive) Support and/or Rtl (Runtime                                   Ex                         Rtl                                                                   _  _
  2541.                    Library) functions to control access to a memory entity,                   _
  2542.                    such as a file or database, on a multiple-reader (shared
  2543.                    access), single-writer (exclusive access) basis.
  2544.  
  2545.              RPC             RPC
  2546.                 Remote procedure call
  2547.                    A call from one process's thread (client) to another's
  2548.                    (server) that exists in a different address space,
  2549.                    usually on another (networked) machine. See also IPC.
  2550.  
  2551.              Rtl functions             Rtl functions
  2552.                 There are two general sets of (C) Runtime Library functions                                                  _  _    _
  2553.                 supplied with the NT system, one each for user mode and for
  2554.                 kernel mode. All NT drivers can call the kernel-mode Rtl                                                                     Rtl
  2555.                 functions. An NT (highest-level) driver cannot call a user-
  2556.                 mode Rtl function unless it is executing in the context of                     Rtl
  2557.                 the user-mode thread that requested the driver's current I/O
  2558.                 operation.
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.         G-40     Kernel-mode Driver Design Guide        G-40     Kernel-mode Driver Design Guide
  2581.  
  2582.  
  2583.         run        run
  2584.            verb: to execute on a processor.
  2585.            noun: (1) within an MCB, a contiguous range of VBNs mapped
  2586.            to a contiguous range of LBNs (a.k.a. "extent"); (2) slang
  2587.            for a quantum, as in "when the thread is given the run..."
  2588.  
  2589.         runtime priority inversion        runtime priority inversion
  2590.            A condition that can occur when threads with mismatched
  2591.            priority attributes share resources or when a higher
  2592.            priority thread waits for a lower priority thread to
  2593.            complete some action. Such an inversion occurs whenever:
  2594.            n  A high priority thread is blocked, waiting for a lower           n
  2595.               priority thread to release a shared resource or to
  2596.               complete an action (and probably to set a dispatcher
  2597.               object to the Signaled state).
  2598.            n  This lower priority thread is also blocked, because many           n
  2599.               other higher priority threads are ready for execution, so
  2600.               they will be run first.
  2601.            Under these circumstances, the waiting high priority thread
  2602.            undergoes a runtime priority inversion, because one or more
  2603.            lower priority threads will run before it does. Note that
  2604.            two threads with mismatched priorities must be very careful
  2605.            to avoid deadlocks if they "share" a resource in a mutually
  2606.            exclusive manner (that is, only one thread at a given time
  2607.            can access the resource). Such a pair of threads should not
  2608.            attempt to use a spin lock. See also thread object,
  2609.            priority, resource, and deadlock.
  2610.  
  2611.         SACL        SACL
  2612.            System access control list
  2613.               A part of the NT security descriptor for an object, used
  2614.               to maintain per object auditing information. See also
  2615.               security descriptor, ACE, and ACL.
  2616.  
  2617.         SAM        SAM
  2618.            Security Account Manager
  2619.               An integral subsystem that maintains a database of
  2620.               information on user accounts, including passwords, any
  2621.               account groups a given user belongs to, the access rights
  2622.               each user is allowed, and any special privileges a given
  2623.               user has.
  2624.  
  2625.         SCSI        SCSI
  2626.            Small computer standard interface (pronunciation: "scuzzy")
  2627.               NT SCSI drivers are assumed to comply with the ANSI SCSI-
  2628.               II standard. In addition, NT supplies an OS-dependent
  2629.               SCSI port driver, implemented as a dynamic-link library,
  2630.  
  2631.  
  2632.  
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.                             Glossary of Terms and Acronyms     G-41                                 Glossary of Terms and Acronyms     G-41     
  2647.  
  2648.  
  2649.                    and several device-type-specific class drivers, together
  2650.                    with system-defined interfaces to HBA-specific SCSI
  2651.                    miniport drivers and additional class drivers.
  2652.  
  2653.              section object             section object
  2654.                 A user-mode object type, representing a memory entity that
  2655.                 can be mapped onto a range of virtual addresses in a
  2656.                 process's address space. Note that creating or opening a
  2657.                 section object does not allocate physical memory. See also
  2658.                 view.
  2659.                 An opened section object can be either:
  2660.                 1  File-backed - The original entity resides as a file on a                   ___________
  2661.                    disk.
  2662.                 2  Page-backed - The original entity resides either in a                   ___________
  2663.                    paging file controlled by the Memory Manager or (wholly
  2664.                    or partially) in physical memory where storage is page-
  2665.                    granular and the page size is microprocessor-dependent.
  2666.                    Unnamed sections are not sharable, but a view into an
  2667.                    unnamed section can be mapped through the creating
  2668.                    process's handle. Named sections are shareable. All
  2669.                    sections are inheritable by child processes.
  2670.  
  2671.              security descriptor             security descriptor
  2672.                 A data structure used to hold per-object security
  2673.                 information, including the object's owner, group, protection
  2674.                 attributes, and audit information. See also ACE, ACL, SACL
  2675.                 and SID.
  2676.  
  2677.              security violation             security violation
  2678.                 A user-mode attempt to access an object (by passing its
  2679.                 handle to a system service) without having the correct,
  2680.                 granted access rights for the requested operation. See also
  2681.                 ACE and ACL.
  2682.                    Note that the Security component does not check the
  2683.                    access rights on object handles used by kernel-mode code.
  2684.                    However, the I/O Manager and network server driver can
  2685.                    force a security access check on object handles.
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.         G-42     Kernel-mode Driver Design Guide        G-42     Kernel-mode Driver Design Guide
  2713.  
  2714.  
  2715.         SEH        SEH
  2716.            Structured exception handling
  2717.               A feature of the NT system, which supports control
  2718.               transfers to exception handlers when certain runtime
  2719.               exceptions occur. The system traps the following general
  2720.               kinds of exceptions:
  2721.               1   Hardware-defined faults or traps, such as,
  2722.                   n  Access violations (see also access violation).                  n
  2723.                   n  Data-type misalignments (such as a 16-bit entity                  n
  2724.                      aligned on an odd-byte boundary).
  2725.                   n  Illegal and privileged instructions.                  n
  2726.                   n  Invalid lock sequences (attempting to execute an                  n
  2727.                      invalid sequence of instructions within an
  2728.                      interlocked section of code).
  2729.                   n  Integer divides by zero and overflows.                  n
  2730.                   n  Floating-point divides by zero, overflows,                  n
  2731.                      underflows, and reserved operands.
  2732.                   n  Breakpoints and single steps (to support                  n
  2733.                      debuggers).
  2734.               2   System software-defined exceptions, such as,
  2735.                   n  Guard-page violations (attempting to load or store                  n
  2736.                      data from or to a location within a guard page).
  2737.                   n  Page read errors (attempting to read a page into                  n
  2738.                      memory and encountering a concurrent I/O error).
  2739.                   n  Paging file quota exceeded (attempting to commit                  n
  2740.                      backing store for a page currently being removed
  2741.                      from a process's working set).
  2742.               NT supplies standard exception handlers for data-type
  2743.               alignment faults and for ANSI/IEEE Std 754-1985 floating-
  2744.               point faults.
  2745.               Both user-mode and kernel-mode code can set up custom
  2746.               exception handlers using the except, try, and finally                                           except  try      finally
  2747.               constructs currently supplied by NT-compatible C
  2748.               compilers and supported by NT-supplied Rtl (Run-time                                                     Rtl                                                          _   _
  2749.               Library) functions. An exception handler can be              _
  2750.               associated with each call frame in the function-call
  2751.               hierarchy of a program. A CONTEXT record contains the
  2752.               register state for each exception handler.
  2753.  
  2754.  
  2755.  
  2756.  
  2757.  
  2758.  
  2759.  
  2760.  
  2761.  
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.  
  2778.                             Glossary of Terms and Acronyms     G-43                                 Glossary of Terms and Acronyms     G-43     
  2779.  
  2780.  
  2781.              semaphore object             semaphore object
  2782.                 A user-mode semaphore gates access to resources, allowing
  2783.                 some maximum number of threads (as specified when the
  2784.                 semaphore object was created) to access the resources
  2785.                 protected by the semaphore.
  2786.                 Each user-mode semaphore also has an associated current
  2787.                 count, representing how many additional threads can acquire
  2788.                 the semaphore. When the current count is zero, a thread
  2789.                 attempting to acquire the semaphore waits (i.e., blocks)
  2790.                 until the count is incremented (another thread has released
  2791.                 that semaphore). Every user-mode semaphore object is
  2792.                 implemented through the use of a kernel-mode semaphore
  2793.                 object.
  2794.                 A kernel-mode semaphore is an instance of a Kernel-defined
  2795.                 dispatcher object type. It has either of two uses:
  2796.                 1  A counting semaphore gates access to a resource by                     __________________
  2797.                    allowing some number of threads (up to a specified limit)
  2798.                    to access the resource while the semaphore is set to the
  2799.                    Signaled state (semaphore count is nonzero).
  2800.                 2  A binary semaphore gates access to a single resource, if                     ________________
  2801.                    and only if the limit is set to 1 and it is not possible
  2802.                    for the semaphore to be over-Signaled (set to the
  2803.                    Signaled state when it is already in the Signaled state).
  2804.                    A binary semaphore gates exclusive access to a resource.
  2805.                    However, using a semaphore with a limit of 1 to gate
  2806.                    access is not the same thing as using a mutex:                             ___
  2807.                    semaphores have no ownership, deadlocks are possible, and
  2808.                    the owner's priority is unaffected.
  2809.  
  2810.              server             server
  2811.                 (1) A process with one or more threads that accept requests
  2812.                 from client processes. See also client/server.
  2813.                 (2) An NT-supplied file system driver that provides remote
  2814.                 access to files, named pipes, comm devices, and print
  2815.                 devices. It implements the LAN Manager 2.1 SMB (server
  2816.                 message block) protocol, along with NT-specific extensions.
  2817.  
  2818.              Session Manager             Session Manager
  2819.                 An integral subsystem that starts and keeps track of NT
  2820.                 logon sessions and serves as an intermediary between the
  2821.                 Windows NT and other protected subsystems.
  2822.  
  2823.  
  2824.  
  2825.  
  2826.  
  2827.  
  2828.  
  2829.  
  2830.  
  2831.  
  2832.  
  2833.  
  2834.  
  2835.  
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.  
  2843.  
  2844.         G-44     Kernel-mode Driver Design Guide        G-44     Kernel-mode Driver Design Guide
  2845.  
  2846.  
  2847.         SFD        SFD
  2848.            SCSI filter driver
  2849.               An add-on driver for a SCSI class device that is layered
  2850.               between the system-supplied class driver and the NT SCSI
  2851.               port driver. An SFD intercepts requests for a particular
  2852.               SCSI peripheral device that has special features (not
  2853.               shared by other SCSI devices of its class), or that does
  2854.               not accept standard SCSI-II CDBs, in order to set up
  2855.               device-specific requests. For other devices of the same
  2856.               class on the same bus, an SFD simply passes requests sent
  2857.               down from the system-supplied class driver on to the NT
  2858.               SCSI port driver.
  2859.  
  2860.         SID        SID
  2861.            Security identifier
  2862.               A value, unique across time and space, that identifies a
  2863.               process in the Security system. SIDs can either identify
  2864.               an individual process, usually containing a user's logon
  2865.               identifier, or a group of processes.
  2866.  
  2867.         Signaled        Signaled
  2868.            An attribute of Kernel-defined dispatcher objects that
  2869.            support synchronization. When the Kernel sets such an object
  2870.            to the Signaled state, any threads waiting on the object are
  2871.            released from their wait and become elgible for execution.
  2872.  
  2873.         single-byte coding scheme        single-byte coding scheme
  2874.            A character encoding scheme, such as ASCII, that uses a byte
  2875.            to represent each character. See also Unicode.
  2876.  
  2877.         SMP        SMP
  2878.            Symmetric multiprocessor machine
  2879.               See multiprocessor machine.
  2880.  
  2881.         spin lock        spin lock
  2882.            A spin lock is a low-level, synchronization mechanism
  2883.            defined by the NT Kernel. A driver or any other kernel-mode
  2884.            component can use a spin lock to synchronize access to a
  2885.            shared resource, particularly in a multiprocessor machine.
  2886.            When one routine holds a particular spin lock, a second
  2887.            routine running on another processor cannot access the
  2888.            resource protected by that spin lock until it acquires the
  2889.            lock. While a routine attempts to acquire a spin lock, it
  2890.            cannot carry out other operations (it spins) until the lock                                                 _____
  2891.            has been acquired.
  2892.            Note that operations involving system-defined spin locks are
  2893.            IRQL-specific to help prevent deadlocks: an interrupt spin                                                       ______________
  2894.  
  2895.  
  2896.  
  2897.  
  2898.  
  2899.  
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910.                             Glossary of Terms and Acronyms     G-45                                 Glossary of Terms and Acronyms     G-45     
  2911.  
  2912.  
  2913.                 lock can only be acquired while executing at a DIRQL of the                ____
  2914.                 associated interrupt object; an executive spin lock can only                                                ___________________
  2915.                 be acquired while executing at DISPATCH_LEVEL IRQL.
  2916.  
  2917.              SRB             SRB
  2918.                 SCSI request block
  2919.                    An NT-defined structure, used to communicate I/O requests
  2920.                    from a SCSI class driver to the NT-dependent port driver,
  2921.                    which relays such request to appropriate HBA-specific
  2922.                    miniport drivers.
  2923.  
  2924.              stream file object             stream file object
  2925.                    A virtual file representing on-disk data associated with
  2926.                    a file, some of which might not be part of the physical
  2927.                    file that backs a file object. For example, a stream file
  2928.                    object makes it possible to cache the EAs or ACL for a
  2929.                    file object together with the file's data. See also
  2930.                    volume file.
  2931.  
  2932.              stripe driver             stripe driver
  2933.                    (a.k.a. "striper")
  2934.                    An intermediate driver whose job is to get better
  2935.                    performance for file accesses than the underlying disk
  2936.                    driver can. A stripe driver is layered between the FSD
  2937.                    and a disk device driver (or between a mirror driver and
  2938.                    the disk driver). It distributes pieces of each file over
  2939.                    a set of partitions concurrently, thereby cutting down on
  2940.                    synchronous read/write time for the file.
  2941.  
  2942.              subject             subject
  2943.                 The combination of a (security) token and of an associated
  2944.                 program that may use system services. See also token.
  2945.  
  2946.              symbolic link             symbolic link
  2947.                 (1) An instance of the symbolic link object type,
  2948.                 representing a "soft alias" that equates one name to another
  2949.                 within the NT Object Manager's name space.
  2950.                 (2) A file object with special properties. A symbolic link
  2951.                 file is recognized as having the following three attributes:
  2952.                 1  Its FILE_ATTRIBUTE_CONTROL bit is set.
  2953.                 2  It has an EA whose name is .FAMILY_IDs and whose 128-bit
  2954.                    binary value is 42 (decimal).
  2955.                 3  It has an EA whose name is .SYMBOLIC_LINK_VALUE and whose
  2956.                    value is the fully qualified pathname of the target file.
  2957.                 When a special file of this type is encountered as a
  2958.                 component of a pathname, rather than opening the file
  2959.                 itself, the file system is redirected to the target file.
  2960.  
  2961.  
  2962.  
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.         G-46     Kernel-mode Driver Design Guide        G-46     Kernel-mode Driver Design Guide
  2977.  
  2978.  
  2979.               Note that the I/O Manager does not actually use a
  2980.               symbolic link object to implement symbolic link files; it
  2981.               uses a file object.
  2982.  
  2983.  
  2984.  
  2985.  
  2986.  
  2987.  
  2988.  
  2989.  
  2990.  
  2991.  
  2992.  
  2993.  
  2994.  
  2995.  
  2996.  
  2997.  
  2998.  
  2999.  
  3000.  
  3001.  
  3002.  
  3003.  
  3004.  
  3005.  
  3006.  
  3007.  
  3008.  
  3009.  
  3010.  
  3011.  
  3012.  
  3013.  
  3014.  
  3015.  
  3016.  
  3017.  
  3018.  
  3019.  
  3020.  
  3021.  
  3022.  
  3023.  
  3024.  
  3025.  
  3026.  
  3027.  
  3028.  
  3029.  
  3030.  
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.  
  3042.                             Glossary of Terms and Acronyms     G-47                                 Glossary of Terms and Acronyms     G-47     
  3043.  
  3044.  
  3045.              symbolic link object             symbolic link object
  3046.                 An instance of a type defined by the Object Manager, used to
  3047.                 translate a reference to one named object into a different
  3048.                 name.
  3049.  
  3050.              system services             system services
  3051.                 The set of native, user-mode routines exported by the NT
  3052.                 executive. Each system service has a name of the form
  3053.                 TwoLettersXxxYyy where:                ________________
  3054.                 n  TwoLetters is the prefix for all system services.                n                   __________
  3055.                 n  Xxx is usually a verb, describing the operation of a                n                   ___
  3056.                    given service.
  3057.                 n  Yyy is generally the object type the service operates on.                n                   ___
  3058.  
  3059.              system space             system space
  3060.                 See kernel space.
  3061.  
  3062.              system worker threads             system worker threads
  3063.                 A set of kernel-mode threads provided by the NT Executive
  3064.                 Support component that NT drivers, particularly FSDs, use to
  3065.                 get work done within a nonarbitrary thread context. Such a
  3066.                 driver sets up a work queue item with a driver-supplied
  3067.                 callback routine that is queued to be run when a system
  3068.                 worker thread is dispatched for execution by the Kernel. See
  3069.                 also FSP and thread object.
  3070.  
  3071.              TB             TB
  3072.                 Translation buffer
  3073.                    See TLB.
  3074.  
  3075.              TEB             TEB
  3076.                 Thread environment block
  3077.  
  3078.  
  3079.  
  3080.  
  3081.  
  3082.  
  3083.  
  3084.  
  3085.  
  3086.  
  3087.  
  3088.  
  3089.  
  3090.  
  3091.  
  3092.  
  3093.  
  3094.  
  3095.  
  3096.  
  3097.  
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.  
  3108.         G-48     Kernel-mode Driver Design Guide        G-48     Kernel-mode Driver Design Guide
  3109.  
  3110.  
  3111.         thread object        thread object
  3112.            A user-mode thread object represents a path of execution
  3113.            within the current process. Every user-mode thread object is
  3114.            implemented through the use of an embedded kernel-mode
  3115.            thread object.
  3116.            A kernel-mode thread is an instance of a Kernel-defined
  3117.            dispatcher object type. It is the basic schedulable entity
  3118.            in the NT system.
  3119.            A thread object:
  3120.            n  Is dispatched for execution by the Kernel.           n
  3121.            n  Has the following properties at any given moment:           n
  3122.               1   Dispatch state
  3123.               2   Priority
  3124.               3   Context
  3125.               4   Execution mode (kernel or user)
  3126.               5   Affinity
  3127.            n  Is "owned by" a process object but can attach itself to           n
  3128.               another process's address space.
  3129.            Note that most NT drivers usually execute in the context of
  3130.            the currently running thread, that is, in an arbitrary
  3131.            thread context. While an NT file system driver can create an
  3132.            independent process for its own device-dedicated threads,
  3133.            FSDs usually avoid setting up a driver-created process in
  3134.            order to conserve system memory. FSDs (and other NT drivers)
  3135.            can set up device-dedicated (system-process) threads and/or
  3136.            FSDs can use system worker threads if they need a driver-
  3137.            specific thread context in which to execute. NT drivers use
  3138.            kernel-mode Ps (Process Structure) functions to create                       Ps                           _       _
  3139.            processes and/or device-dedicated threads, not the Ke(rnel)                                                              Ke                                                      ___
  3140.            thread functions. FSDs call routines supplied by the NT
  3141.            Executive Support component to use system worker threads.           Ex
  3142.  
  3143.         TID        TID
  3144.            Target identifier
  3145.               One of up to eight target controllers on a SCSI-II bus
  3146.               through which peripheral devices are addressable, either
  3147.               as numbered TIDs or as logical units (LUs) subordinate to
  3148.               a particular TID.
  3149.  
  3150.  
  3151.  
  3152.  
  3153.  
  3154.  
  3155.  
  3156.  
  3157.  
  3158.  
  3159.  
  3160.  
  3161.  
  3162.  
  3163.  
  3164.  
  3165.  
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.  
  3174.                             Glossary of Terms and Acronyms     G-49                                 Glossary of Terms and Acronyms     G-49     
  3175.  
  3176.  
  3177.              timer object             timer object
  3178.                 A timer object is an instance of a Kernel-defined dispatcher
  3179.                 object type. User-mode timer objects can be used to
  3180.                 synchronize the execution of specific actions, optionally an
  3181.                 APC, with time. Kernel-mode timer objects are used to
  3182.                 synchronize the execution of specific actions, in particular
  3183.                 a DPC, with time.
  3184.                    When set to a specified interval:
  3185.                    n   The timer's state is reset to Not-Signaled.                   n
  3186.                    n   The timer is placed in a queue that is ordered                   n
  3187.                        according to expiration time.
  3188.                    Any thread that waits on the timer is suspended until the
  3189.                    timer is set to the Signaled state when its interval
  3190.                    expires.
  3191.                    Expiration of the specified interval does not determine
  3192.                    the end of a wait; the Signaled state does. Then, the
  3193.                    Kernel attempts to satisfy as many waiters as possible.
  3194.                 The I/O Manager also supplies timer functions for drivers to
  3195.                 use.
  3196.  
  3197.              TLB             TLB
  3198.                 Translation lookaside buffer
  3199.                    (Not directly accessible by system software for the i386;
  3200.                    otherwise, an on-chip virtual-to-page address translation
  3201.                    cache for the i486 and MIPS microprocessors.)
  3202.  
  3203.              toaster device             toaster device
  3204.                 slang: A SCSI peripheral device of an unknown class.
  3205.  
  3206.              token object             token object
  3207.                 A security object type, representing an authenticated user
  3208.                 process. Every process has an assigned token, which becomes
  3209.                 the default token for each of that process's threads.
  3210.                 However, an individual thread can be assigned a token that
  3211.                 overrides this default.
  3212.  
  3213.              trap handler             trap handler
  3214.                 A body of code in the Kernel to which the processor
  3215.                 transfers control when an interrupt or exception occurs. The
  3216.                 trap handler determines the type of condition that caused
  3217.                 the interrupt or exception and transfers control to an ISR
  3218.                 or exception handler.
  3219.  
  3220.              Unicode             Unicode
  3221.                 A fixed-width, 16-bit character encoding standard that NT
  3222.                 uses to provide NLS support for locale-specific natural
  3223.                 languages. See also NLS.
  3224.  
  3225.  
  3226.  
  3227.  
  3228.  
  3229.  
  3230.  
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.         G-50     Kernel-mode Driver Design Guide        G-50     Kernel-mode Driver Design Guide
  3241.  
  3242.  
  3243.         user mode        user mode
  3244.            The nonprivileged processor mode in which application code,
  3245.            including protected subsystem code, executes. User-mode
  3246.            threads can only gain access to system data by calling
  3247.            system services. See also kernel mode.
  3248.  
  3249.         valid page        valid page
  3250.            A virtual page that is currently in physical memory. See
  3251.            also invalid page.
  3252.  
  3253.         user space        user space
  3254.            A block of virtual memory, dedicated to the use of the
  3255.            current user-mode process. Generally, the NT user space is a
  3256.            range of low-order virtual addresses around two gigabytes in
  3257.            size. See also hyperspace, kernel space, section object, and
  3258.            view.
  3259.  
  3260.         VBN        VBN
  3261.            Virtual block number
  3262.               A virtual block number identifies a block (a.k.a.
  3263.               "sector") relative to the start of a file. For a file
  3264.               with N blocks of data, the corresponding VBNs are 0
  3265.               through (N - 1).
  3266.  
  3267.         VCB        VCB
  3268.            Volume control block
  3269.               An internal NT file system structure in which a file
  3270.               system maintains state about a mounted volume.
  3271.  
  3272.         VDM        VDM
  3273.            Virtual DOS machines
  3274.               A protected subsystem that emulates DOS and Windows
  3275.               (earlier versions than Windows NT) on top of NT.
  3276.  
  3277.         view        view
  3278.            A whole or partial mapping of a section object, always
  3279.            allocated on a 64K boundary, in the virtual address space of
  3280.            a process. Note that mapping a view of a section that is
  3281.            backed by an executable image file, in effect, "loads" the
  3282.            image. (Except during the system boot process, NT uses
  3283.            memory-mapped I/O, rather than a loader, to start program
  3284.            execution.)
  3285.  
  3286.  
  3287.  
  3288.  
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.  
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.  
  3305.  
  3306.                             Glossary of Terms and Acronyms     G-51                                 Glossary of Terms and Acronyms     G-51     
  3307.  
  3308.  
  3309.              virtual memory             virtual memory
  3310.                 A logical view of memory that does not necessarily
  3311.                 correspond to the underlying physical memory structure. For
  3312.                 example, a given range of virtual addresses might be mapped
  3313.                 to (and backed by) some number of discontiguous physical
  3314.                 pages, even though the corresponding virtual pages could be
  3315.                 accessed as a single, contiguous range.
  3316.  
  3317.              VMCB             VMCB
  3318.                 Volume map control block
  3319.                    An opaque structure that stores VBN-to-LBN mappings for a
  3320.                    volume file. FSDs can use a set of FsRtl routines to                                                      FsRtl
  3321.                    maintain a VMCB for each mounted volume.
  3322.  
  3323.              volume file             volume file
  3324.                    A virtual file, maintained by certain NT file systems,
  3325.                    whose contents map ancillary structures of the on-disk
  3326.                    file system. A volume file is a type of stream file.
  3327.  
  3328.              VPB             VPB
  3329.                 Volume parameter block
  3330.                    A VPB is a structure that connects a file system's device
  3331.                    object to the device upon which the volume is mounted.
  3332.                    The file system's device object is actually used to
  3333.                    represent the volume (VPB) mounted on the actual device
  3334.                    (physical device object). Device objects for physical
  3335.                    disks, tapes, CD ROMs, and RAM disks have associated
  3336.                    VPBs.
  3337.  
  3338.              VRP             VRP
  3339.                 Video request packet
  3340.                    A structure used to communicate device I/O control
  3341.                    requests from a Windows NT display driver to its
  3342.                    corresponding adapter-specific miniport driver. The NT
  3343.                    I/O Manager sets up an IRP in response to a user-mode
  3344.                    display driver's I/O control request and calls the NT-
  3345.                    supplied video port driver with the IRP. The video port
  3346.                    driver uses the IRP to set up a VRP and calls the
  3347.                    miniport driver's StartIo entry point with the VRP.
  3348.  
  3349.              window turn             window turn
  3350.                 Turning a window refers to the process of filling an MCB
  3351.                 with the appropriate retrieval pointers in order to map a
  3352.                 VBN for a file to an LBN for a disk.
  3353.  
  3354.  
  3355.  
  3356.  
  3357.  
  3358.  
  3359.  
  3360.  
  3361.  
  3362.  
  3363.  
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.  
  3371.  
  3372.         G-52     Kernel-mode Driver Design Guide        G-52     Kernel-mode Driver Design Guide
  3373.  
  3374.  
  3375.         working set        working set
  3376.            The set of physical pages that are resident for a given
  3377.            process while it has one or more running threads. See also
  3378.            balance set and quota.
  3379.               The size of each process's working set is bounded by a
  3380.               minimum number of pages (that the NT Memory Manager
  3381.               guarantees to be resident while the process has one
  3382.               running thread) and by a maximum. However,  NT does not
  3383.               necessarily constrain a process's working set to its
  3384.               maximum if many free pages are available.
  3385.  
  3386.         WORM        WORM
  3387.            Write-once, read many
  3388.  
  3389.         WSL        WSL
  3390.            Working set list
  3391.               The set of WSLEs for the current process.
  3392.  
  3393.         WSLE        WSLE
  3394.            Working set list entry
  3395.  
  3396.         zone        zone
  3397.            A block of dynamically allocatable and deallocatable storage
  3398.            of a specified and fixed size within a block of equivalent
  3399.            zones. Each zone within such a block is aligned on a
  3400.            platform-dependent boundary, determined by the processor's
  3401.            data cache line size. Callers of the Ex(ecutive) Support                                                Ex
  3402.            zone functions must synchronize their allocation and
  3403.            deallocation of zones within the block.
  3404.               For example, the I/O Manager uses zones to implement
  3405.               lookaside lists for fast allocation and deallocation of
  3406.               IRPs and MDLs.
  3407.  
  3408.         Zw routines        Zw routines
  3409.            A set of entry points parallel to the NT executive's system
  3410.            services. A call to a ZwXxx entry point from kernel-mode                                 Zw                                   ___
  3411.            code (including calls from other system services or NT
  3412.            drivers) supplies the corresponding system service, except
  3413.            the caller's access rights and the arguments to the Zw                                                               Zw
  3414.            "alias" are not checked for validity, and the call does not
  3415.            cause the previous mode to be set to user mode. It is the
  3416.            responsibility of a kernel-mode caller to check all user-
  3417.            supplied arguments for validity before such a caller passes
  3418.            them on to a ZwXxx entry point. See also system services,                        Zw                          ___
  3419.            probe, and SEH.
  3420.  
  3421.  
  3422.  
  3423.  
  3424.  
  3425.  
  3426.  
  3427.  
  3428.  
  3429.  
  3430.  
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436.  
  3437.  
  3438.  
  3439.  
  3440.  
  3441.  
  3442.  
  3443.  
  3444.  
  3445.  
  3446.  
  3447.  
  3448.  
  3449.  
  3450.  
  3451.  
  3452.  
  3453.  
  3454.  
  3455.  
  3456.  
  3457.  
  3458.  
  3459.  
  3460.  
  3461.  
  3462.  
  3463.  
  3464.  
  3465.  
  3466.  
  3467.  
  3468.  
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474.  
  3475.  
  3476.  
  3477.  
  3478.  
  3479.  
  3480.  
  3481.  
  3482.  
  3483.  
  3484.  
  3485.  
  3486.  
  3487.  
  3488.  
  3489.  
  3490.  
  3491.  
  3492.  
  3493.  
  3494.  
  3495.  
  3496.  
  3497.  
  3498.  
  3499.